#include<bits/stdc++.h> 
using namespace std;
//	一个非回文数可以通过与其逆序相加操作得到一个回文数。如果一次不行就多次，67->67+76->
//	143->143+341->484。现在给定一个正整数N，需要判断在K步以内是否能够得到回文数
//1.每个输入包括一个测试用例，每个用例包括2个正整数N≤10^10，K≤100。分别表示原始数据和
//	最大步骤数
//2.对于每一个测试用例，在一行里输出两个数，第一个数字是由N得到的回文数，第二个是花费的
//	步数。如果K步以内没有得到回文数，则输出K。
//3.大整数加减，字符串遍历
bool isPali(vector<int> v){	//首尾对应位置的比较，判断一个数字是否为回文数 
	unsigned int l=v.size();
	for(unsigned int i=0;i<l/2;i++){
		if(v[i]!=v[l-i-1]) return false;
	}
	return true;
} 
vector<int> add(vector<int> a){	//大数加法 
	vector<int> ans;
	int c = 0;
	unsigned int l = a.size();
	for(unsigned int i=0;i<l;i++){
		int t = a[i] + a[l-i-1] + c;
		c = t / 10;
		ans.push_back(t % 10);
	}
	if(c!=0) ans.push_back(c);
	return ans;
}
int main(){
	string s;
	int K;
	cin>>s>>K;
	vector<int> N;
	for(unsigned int i = 0;i<s.length();i++){	//输入的数字转化为向量 
		N.push_back(int(s[i]-'0'));
	}
	int count_ = 0;	//计数当前步数 
	while(count_<K && isPali(N) == false){
		N = add(N);
		count_ ++;
	}
	if(count_<K || isPali(N) == true){
		for(unsigned int i = 0;i<N.size();i++){
			cout<<N[i];
		}
		cout<<endl<<count_<<endl;
	}
	else{
		for(int i = N.size()-1;i>=0;i--){
			cout<<N[i];
		}
		cout<<endl<<K<<endl; 
	}
}